package ace.tool.generate.code.impl.resolver.scheme.model.dto;

import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author caspar
 * @date 2023/11/17 10:27
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EntityClassSchemeInfo {

  /**
   * api 项目根目录 d:/generate/ace-module-demo-projects/ace-module-demo-api
   */
  private String apiProjectRootDir;

  /**
   * api 项目代码根目录 d:/generate/ace-module-demo-projects/ace-module-demo-api/src/main/java
   */
  private String apiProjectSourceCodeRootDir;

  /**
   * api 包完全名称
   */
  private String apiClassPackageFullName;

  /**
   * 实体名称
   */
  private String entityClassName;

  /**
   * 实体完全名称
   */
  private String entityClassFullName;

  /**
   * 模型备注
   */
  private String remark;

  /**
   * 实体类id类型
   */
  private String entityIdType;

  /**
   * 模型字段
   */
  private List<EntityClassSchemeInfoField> fields;

  /**
   * 索引
   */
  private List<EntityClassSchemeInfoTableIndex> indexes;

  /**
   * dto 包完全名称
   */
  private String dtoClassPackageFullName;

  /**
   * dto 实体类文件完全名称
   */
  private String dtoClassFileFullName;

  /**
   * dto 实体类名称
   */
  private String dtoClassName;

  /**
   * dto 实体类完全名称
   */
  private String dtoClassFullName;

  /**
   * api 类完全名称
   */
  private String apiClassName;

  /**
   * api 类完全完全名称
   */
  private String apiClassFullName;

  /**
   * api 类文件完全名称
   */
  private String apiClassFileFullName;

  /**
   * contract api 包完全名称
   */
  private String feignApiClassPackageFullName;

  /**
   * contract api 类文件完全名称 d:/generate/ace-module-demo-projects/ace-module-demo-sdk-starter/src/main/java/ace/module/demo/sdk/contract/DemoFeignApi.java
   */
  private String feignApiClassFileFullName;

  /**
   * contract api 类完全名称
   */
  private String feignApiClassName;

  /**
   * contract api 类完全完全名称
   */
  private String feignApiClassFullName;

  /**
   * contract 包完全名称
   */
  private String feignClassPackageFullName;

  /**
   * contract 类文件完全名称 d:/generate/ace-module-demo-projects/ace-module-demo-sdk-starter/src/main/java/ace/module/demo/sdk/contract/impl/DemoFeign.java
   */
  private String feignClassFileFullName;

  /**
   * contract 类名称
   */
  private String feignClassName;

  /**
   * contract 类完全完全名称
   */
  private String feignClassFullName;

  /**
   * contract 类名称 首写字母小写
   */
  private String feignFirstLowercaseClassName;

  /**
   * contract name contextId path 的配置前缀
   */
  private String feignConfigPrefix;

  /**
   * 命名空间
   */
  private String namespace;

  /**
   * 小写破折号类名
   */
  private String entityClassLowercaseDashName;

  /**
   * sdk rest controller 类名
   */
  private String restRpcControllerClassName;

  /**
   * sdk rest controller 完全类名
   */
  private String restRpcControllerClassFullName;

  /**
   * sdk rest controller 包完全路径
   */
  private String restRpcControllerPackageFullName;

  /**
   * manager 类的包完全路径
   */
  private String managerPackageFullName;

  /**
   * manager 类的完全名称
   */
  private String managerClassFullName;

  /**
   * manager 类的名称
   */
  private String managerClassName;

  /**
   * manager impl 类的包完全路径
   */
  private String managerImplPackageFullName;

  /**
   * manager impl 类的完全名称
   */
  private String managerImplClassFullName;

  /**
   * manager impl 类的名称
   */
  private String managerImplClassName;
}
